#pragma once

#include <string>
#include <unordered_map>

class HttpResponse
{
public:
    int _statu;                                            // 响应状态码
    bool _redirect_flag;                                   // 是否开启重定向
    std::string _body;                                     // 响应正文
    std::string _redirect_url;                             // 重定向路径
    std::unordered_map<std::string, std::string> _headers; // 响应头部字段

public:
    HttpResponse(int statu = 200);

    // 1. 重置状态
    void ReSet();

    // 2. 插入头部字段
    void SetHeader(const std::string &key, const std::string &val);

    // 3. 判断是否存在指定头部字段
    bool HasHeader(const std::string &key);

    // 4. 获取头部字段
    std::string GetHeader(const std::string &key);

    // 5. 设置头部字段
    void SetContent(const std::string &body, const std::string &type = "text/html");

    // 6. 设置重定向路径
    void SetRedirect(const std::string &url, int statu = 302);

    // 7. 判断是否是短连接
    bool Close();
};